<!DOCTYPE html
  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- saved from url=(0014)about:internet -->
<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<meta name="DC.Type" content="reference">
<meta name="DC.Title" content="continue_receiver Class">
<meta name="DC.subject" content="continue_receiver Class">
<meta name="keywords" content="continue_receiver Class">
<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
<meta name="DC.Format" content="XHTML">
<meta name="DC.Identifier" content="continue_receiver_cls">
<meta name="DC.Language" content="en-US">
<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
<title>continue_receiver Class</title>
</head>
<body id="continue_receiver_cls">
 <!-- ==============(Start:NavScript)================= -->
 <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
 <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
 <!-- ==============(End:NavScript)================= -->
<a name="continue_receiver_cls"><!-- --></a>

 
  <h1 class="topictitle1">continue_receiver Class</h1>
 
   
  <div> 
	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
		 
		<p>An abstract base class for nodes that act as receivers of 
		  <span class="keyword">continue_msg</span> objects. These nodes call a method 
		  <span class="keyword">execute</span> when the number of 
		  <span class="keyword">try_put</span> calls reaches a threshold that represents
		  the number of known predecessors. 
		</p>
 
	 </div>
 
	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
		 
		<pre>class continue_receiver;</pre> 
	 </div>
 
	 <div class="section"><h2 class="sectiontitle">Header</h2> 
		 
		<pre>#include "tbb/flow_graph.h"</pre> 
	 </div>
 
	 <div class="section"><h2 class="sectiontitle">Description</h2> 
		 
		<p>This type of node is triggered when its method 
		  <span class="keyword">try_put</span> has been called a number of times that is
		  equal to the number of known predecessors. When triggered, the node calls the
		  method 
		  <span class="keyword">execute,</span> then resets and will fire again when it
		  receives the correct number of 
		  <span class="keyword">try_put</span> calls. This node type is useful for
		  dependency graphs, where each node must wait for its predecessors to complete
		  before executing, but no explicit data is passed across the edge. 
		</p>
 
	 </div>
 
	 <div class="section"><h2 class="sectiontitle">Members</h2> 
		 
		<pre>namespace tbb {
namespace flow {
 
class continue_receiver : public receiver&lt; continue_msg &gt; {
public:
    typedef continue_msg input_type;
    typedef sender&lt; input_type &gt; predecessor_type;
    continue_receiver( int num_predecessors = 0 );
    continue_receiver( const continue_receiver &amp;src );
    virtual ~continue_receiver();
    virtual bool try_put( const input_type &amp;v );
    virtual bool register_predecessor( predecessor_type &amp;p );
    virtual bool remove_predecessor( predecessor_type &amp;p );
 
protected:
    virtual void execute() = 0;
};
 
}
}</pre> 
		
<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
			 members of this class. 
		  </span><thead align="left"> 
				<tr> 
				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d68500e131">Member 
				  </th>
 
				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d68500e134">Description 
				  </th>
 
				</tr>
</thead>
 
			 <tbody> 
				<tr> 
				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d68500e131 "><span class="keyword">continue_receiver( int
						num_predecessors = 0 )</span> 
				  </td>
 
				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d68500e134 "> 
					 <p>Constructs a 
						<span class="keyword">continue_receiver</span> that is initialized to
						trigger after receiving 
						<span class="keyword">num_predecessors</span> calls to 
						<span class="keyword">try_put</span>. 
					 </p>
 
				  </td>
 
				</tr>
 
				<tr> 
				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d68500e131 "><span class="keyword">continue_receiver( const
						continue_receiver &amp;src )</span> 
				  </td>
 
				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d68500e134 "> 
					 <p>Constructs a 
						<span class="keyword">continue_receiver</span> that has the same
						initial state that 
						<span class="keyword">src</span> had after its construction. It does
						not copy the current count of 
						<span class="keyword">try_puts</span> received, or the current known
						number of predecessors. The 
						<span class="keyword">continue_receiver</span> that is constructed will
						only have a non-zero threshold if 
						<span class="keyword">src</span> was constructed with a non-zero
						threshold. 
					 </p>
 
				  </td>
 
				</tr>
 
				<tr> 
				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d68500e131 "><span class="keyword">~continue_receiver( )</span> 
				  </td>
 
				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d68500e134 "> 
					 <p>The destructor 
					 </p>
 
				  </td>
 
				</tr>
 
				<tr> 
				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d68500e131 "><span class="keyword">bool try_put( const input_type
						&amp;v )</span> 
				  </td>
 
				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d68500e134 "> 
					 <p>Increments the count of 
						<span class="keyword">try_put</span> calls received. If the incremented
						count is equal to the number of known predecessors, a call is made to 
						<span class="keyword">execute</span> and the internal count of 
						<span class="keyword">try_put</span> calls is reset to zero. This
						method performs as if the call to 
						<span class="keyword">execute</span> and the updates to the internal
						count occur atomically. 
					 </p>

					 <p><strong>Returns</strong>: 
						<span class="keyword">true</span> 
					 </p>
 
				  </td>
 
				</tr>
 
				<tr> 
				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d68500e131 "><span class="keyword">bool register_predecessor(
						predecessor_type &amp;p )</span> 
				  </td>
 
				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d68500e134 "> 
					 <p>Increments the number of known predecessors. 
					 </p>
 
					 <p><strong>Returns</strong>: 
						<span class="keyword">true</span> 
					 </p>
 
				  </td>
 
				</tr>
 
				<tr> 
				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d68500e131 "><span class="keyword">bool remove_predecessor(
						predecessor_type &amp;p )</span> 
				  </td>
 
				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d68500e134 "> 
					 <p>Decrements the number of known predecessors. 
					 </p>
 
					 <div class="Note"><h3 class="NoteTipHead">
					Caution</h3> 
						<p> The method 
						  <span class="keyword">execute</span> is not called if the count of 
						  <span class="keyword">try_put</span> calls received becomes equal to
						  the number of known predecessors as a result of this call. That is, a call to 
						  <span class="keyword">remove_predecessor</span> will never call 
						  <span class="keyword">execute</span>. 
						</p>
 
					 </div> 
				  </td>
 
				</tr>
 
				<tr> 
				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d68500e131 "><span class="keyword">void execute() = 0</span> 
				  </td>
 
				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d68500e134 "> 
					 <p>A pure virtual method that is called when the number of 
						<span class="keyword">try_put</span> calls is equal to the number of
						known predecessors. Must be overridden by the child class. 
					 </p>
 
					 <div class="Note"><h3 class="NoteTipHead">
					Caution</h3> 
						<p> This method should be very fast or else spawn a task to
						  offload its work, since this method is called while the sender is blocked on 
						  <span class="keyword">try_put</span>. 
						</p>
 
					 </div> 
				  </td>
 
				</tr>
 
			 </tbody>
 
		  </table>
</div>
 
	 </div>
 
  </div>


<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong>&nbsp;<a href="../../reference/flow_graph.htm">Flow Graph</a></div>
</div>
<div></div>

</body>
</html>
